草庐IT

Java Swingworker 和多线程

全部标签

c++ - 多线程中的 OpenCV CascadeClassifier C++ 接口(interface)

我想在多线程中使用CascadeClassifier对象运行OpenCVC++接口(interface)。我的程序的工作方式是我的主线程将“some_file.xml”加载到CascadeClassifier对象中。生成三个或更多线程,并将它们传递给级联对象。程序很快就崩溃了。我已经进行了多次测试并得出结论,在执行“detectmultiscale”函数时,CascadeClassifier对象不是线程安全的。我想避免每次产生新线程时都必须从硬盘读取相同的文件。如何避免这种情况? 最佳答案 如果您正在使用以新格式存储的Haar级联的

C++ 可能的线程问题——可能是 Ogre 的错

我的代码中有一个非常奇怪的问题。我正在使用Ogre,我正在尝试手动创建Material,但我认为问题不是Ogre特有的。友情链接:Headerfile,Sourcefile,Stacktrace.请原谅随机名称、评论和std::cout如果您不想阅读,这里是我的代码摘要:创建根加载插件设置渲染系统加载资源设置输入系统创建场景管理器创建场景一种。设置灯光b.手动创建素材C。使用手动创建的Material将实体添加到场景添加帧更新回调开始渲染现在,如果我省略步骤7b和7c,代码将按预期正常工作,并且程序按预期输出到日志。但是,如果我包括步骤7b和7c,则什么也不会发生,也不会写入任何日志。

c++ - 多读/单写类的线程安全

我正在研究一个经常阅读但很少写的集合。classA{boost::shared_ptr>_mySet;public:voidadd(intv){boost::shared_ptr>tmpSet(newstd::set(*_mySet));tmpSet->insert(v);//inserttotmpSet_mySet=tmpSet;//swap_mySet}voidcheck(intv){boost::shared_ptr>theSet=_mySet;if(theSet->find(v)!=theSet->end()){//dosomethingirrelevant}}};在类中,ad

c++ - Oracle 的 Pro*C 从多线程访问

我正在开发一个C++服务器,它通过Pro*C使用Oracle作为后端。现在,我们在从多个线程对不相关的表运行查询时遇到了一个重大问题。我能找到的文档讨论了使用互斥锁等进行同步。根据我在Linux上使用其他数据库(如MySQL)的经验,如果您通过多线程使用单个连接,问题就会出现。我为每个线程创建一个连接句柄解决了这个问题。是否有这样的技巧可以让我们以类似的方式使用OraclePro*C?似乎不太可能在版本10+上不支持此类功能的企业级数据库。 最佳答案 你知道pro*c预编译器选项吗Threads和multithreadedprogr

c++ - 是否可以在 Windows 上以编程方式卡住线程?

例如,在visualstudio中,可以随时卡住/解冻任何线程。是否可以通过编程方式执行此操作,以便为线程代码创建各种压力测试?如果任何线程都可以随机卡住一段随机时间,那么它就会真正运用到同步逻辑。 最佳答案 您可以使用SuspendThread和ResumeThread执行此操作,您将需要通过调用OpenThread获得的线程句柄。threadfunctionsmsdn上的页面是这类事情的良好资源。 关于c++-是否可以在Windows上以编程方式卡住线程?,我们在StackOverf

c++ - 如何确保在不同线程读取变量之前将变量存储到内存中

Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter指导。9年前关闭。更新:我以另一种形式提出了

c++ - 使用 Boost 的 C++ 中的多线程之谜

staticvoidtestlock(){for(inti=0;ithreads;for(intj=0;jjoin();deletethreads[j];}cout输出:Starttesting1threads:1800002threads:3500003threads:5400004threads:7300005threads:9000006threads:10800007threads:12600008threads:15100009threads:166000010threads:1810000我在四核PC(Core2Quad,4核无超线程)上运行此代码,因此我预计1-4个线程会

c++ - 使用 ASIO 的线程池 - 线程退出,任务未执行

我正在使用BoostASIO在C++中编写ThreadPool类。以下是我到目前为止编写的代码:线程池类usingnamespacestd;usingnamespaceboost;classThreadPoolClass{private:/*Thelimittothemaximumnumberofthreadstobe*instantiatedwithinthispool*/intmaxThreads;/*GroupofthreadsinthePool*/thread_groupthreadPool;asio::io_serviceasyncIOService;void_Init(){

c++ - 这种情况下有什么样的多线程保护?

我使用的是C++,我使用的是boost库mutex、recursive_mutex和其他同步对象。我经常有以下模式:无效RebuildAll()。此功能进行了许多内部更改。无效DoSomethingA()。使用RebuildAll构建的内容做一些工作。无效DoSomethingB()。使用RebuildAll构建的内容做一些工作。无效DoSomethingC()。使用RebuildAll构建的内容做一些工作。...可以从不同的线程调用函数。我希望能够并行执行DoSomethingA()、DoSomethingB()和DoSomethingC()。但是当调用RebuildAll()时,我

主线程等待所有子线程结束的4种方法

目录主线程不等待子线程全部结束1、使用CountDownLatch2、同步屏障CyclicBarrier2.1、CyclicBarrier使用2.2、CyclicBarrier复用2.3、CountDownLatch和CyclicBarrier的区别3、使用Future.get()4、使用Completable.allOf()主线程等待所有子线程结束的4种方法,包括使用CountDownLatch、CyclicBarrier、Future.get()、Completable.allOf()。主线程不等待子线程全部结束publicclassWaitThreadsDemo{privatestati